package com.hao.dao;

import java.util.List;
import java.util.Map;

import com.hao.pojo.Base;

/** 
 * 类说明 
 * @author  程豪
 * @version V1.0  创建时间：2014-7-1 下午4:06:06 
 */
public class AbstractBaseDao<T extends Base> extends BaseDao {
	/**
	 * 插入数据
	 * @param namespace	命名空间+ID
	 * @param entity	实体对象
	 * @return 
	 */
	public int insert(String namespace, T entity) {
		return getSqlSession().insert(namespace, entity);
	}

	/**
	 * 根据fieldName修改
	 * @param namespace	命名空间+ID
	 * @param fieldName	字段名
	 */
	public void updateByField(String namespace, Object fieldName) {
		getSqlSession().update(namespace, fieldName);
	}

	/**
	 * 根据map修改
	 * @param namespace	命名空间+ID
	 * @param map		map对象
	 */
	public void updateByMap(String namespace, Map<String, Object> map) {
		getSqlSession().update(namespace, map);
	}

	/**
	 * 根据实体对象修改
	 * @param namespace	命名空间+ID
	 * @param entity	实体对象
	 */
	public void updateByEntity(String namespace, T entity) {
		getSqlSession().update(namespace, entity);
	}

	/**
	 * 根据fieldName删除
	 * @param namespace	命名空间+ID
	 * @param fieldName	字段名
	 */
	public void deleteByField(String namespace, Object fieldName) {
		getSqlSession().delete(namespace, fieldName);
	}

	/**
	 * 根据map删除
	 * @param namespace	命名空间+ID
	 * @param map		map对象
	 */
	public void deleteByMap(String namespace, Map<String, Object> map) {
		getSqlSession().delete(namespace, map);
	}

	/**
	 * 根据实体对象删除
	 * @param namespace	命名空间+ID
	 * @param entity	实体对象
	 */
	public void deleteByEntity(String namespace, T entity) {
		getSqlSession().delete(namespace, entity);
	}

	/**
	 * 根据fieldName查询
	 * @param namespace	命名空间+ID
	 * @param fieldName	字段名
	 * @return	T实体对象
	 */
	public T findByField(String namespace, Object fieldName) {
		return getSqlSession().selectOne(namespace, fieldName);
	}

	/**
	 * 根据map查询
	 * @param namespace	命名空间+ID
	 * @param map		map对象
	 * @return	T实体对象
	 */
	public T findByMap(String namespace, Map<String, Object> map) {
		return getSqlSession().selectOne(namespace, map);
	}

	/**
	 * 根据实体对象查询
	 * @param namespace	命名空间+ID
	 * @param entity	实体对象
	 * @return	T实体对象
	 */
	public T findByEntity(String namespace, T entity) {
		return getSqlSession().selectOne(namespace, entity);
	}

	/**
	 * 根据fieldName查询
	 * @param namespace	命名空间+ID
	 * @param fieldName	字段名
	 * @return	T实体对象的集合
	 */
	public List<T> findByFieldList(String namespace, Object fieldName) {
		return getSqlSession().selectList(namespace, fieldName);
	}

	/**
	 * 根据map查询
	 * @param namespace	命名空间+ID
	 * @param map		map对象
	 * @return	T实体对象的集合
	 */
	public List<T> findByMapList(String namespace, Map<String, Object> map) {
		return getSqlSession().selectList(namespace, map);
	}

	/**
	 * 根据实体对象查询
	 * @param namespace	命名空间+ID
	 * @param entity	实体对象
	 * @return	T实体对象的集合
	 */
	public List<T> findByEntityList(String namespace, T entity) {
		return getSqlSession().selectList(namespace, entity);
	}

	/**
	 * 根据fieldName查询
	 * @param namespace	命名空间+ID
	 * @param fieldName	字段名
	 * @return	Object
	 */
	public Object findByFieldObject(String namespace, Object fieldName) {
		return getSqlSession().selectOne(namespace, fieldName);
	}

	/**
	 * 根据map查询
	 * @param namespace	命名空间+ID
	 * @param map		map对象
	 * @return	Object
	 */
	public Object findByMapObject(String namespace, Map<String, Object> map) {
		return getSqlSession().selectOne(namespace, map);
	}

	/**
	 * 根据实体对象查询
	 * @param namespace	命名空间+ID
	 * @param entity	实体对象
	 * @return	Object
	 */
	public Object findByEntityObject(String namespace, T entity) {
		return getSqlSession().selectOne(namespace, entity);
	}
}
